package com.collection_;

import java.text.Collator;
import java.util.*;
import java.util.stream.Collectors;

//抑制警告
@SuppressWarnings({"all"})
public class ArrayList_ {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        //添加单个元素
        list.add("Hello");
        list.add("World");
        list.add("HAHAHAHA");
        list.add("World");
        System.out.println("根据序列号获取容器中的元素 "+list.get(3));
        //删除单个元素
        list.remove("Hello");
        //查找元素是否存在
        list.contains("world");
        System.out.println("查找元素是否存在 ："+ list.contains("World"));
        //获取元素个数
        System.out.println("获取元素个数 ："+ list.size());
        //判断是否为空
        System.out.println("判断是否为空 ："+ list.isEmpty());
        //清空
        System.out.println("清空 ");
        list.clear();
        System.out.println("判断是否为空 ："+ list.isEmpty());
        //添加多个元素
        Collection c = new ArrayList();
        c.add("A");
        c.add("B");
        c.add("C");
        list.addAll(c);

        //查找多个元素是否存在
        Collection c1 = new ArrayList();
        c1.add("A");
        c1.add("C");
        boolean containsAll = c.containsAll(c1);
        System.out.println("查找多个元素是否存在: " +containsAll);
        //删除多个元素
        c.removeAll(c1);
        System.out.println("删除多个元素 ： "+c.size());

        //第一种遍历方法使用 For-Each 遍历 List
        for (String str : list) {            //也可以改写 for(int i=0;i<list.size();i++) 这种形式
            System.out.println(str);
        }

        //第二种遍历，把链表变为数组相关的内容进行遍历
        String[] strArray=new String[list.size()];
        list.toArray(strArray);
        for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式
        {
            System.out.println(strArray[i]);
        }

        //第三种遍历 使用迭代器进行相关遍历

        Iterator<String> ite=list.iterator();
        while(ite.hasNext())//判断下一个元素之后有值
        {
            System.out.println(ite.next());
        }

        Collator collator = Collator.getInstance(Locale.CHINA);
        List list2 = Arrays.asList("罗友宝", "黄慧", "阿伟", "车晓");
        Collections.sort(list2, collator);
        list2.stream().forEach(System.err::println);

        //将ArrayList转换为LinkedList的程序
        List<String> arrList = Arrays.asList("John", "Jacob", "Kevin", "Katie", "Nathan");
        System.out.println("ArrayList = " + arrList);
        //方案二：
        List<String> myList = arrList.stream().collect(Collectors.toCollection(LinkedList::new));
        System.out.println("LinkedList (ArrayList to LinkedList) = " + myList);

        //方案一:构造方法or addAll()
        LinkedList<String> link = new LinkedList<>(arrList);
        link.stream().forEach(
                System.err::println
        );


    }
}
